//package org.shiki.hrm.service.impl;
//
//import com.baomidou.mybatisplus.mapper.Wrapper;
//import org.shiki.hrm.constant.CourseTypeConstant;
//import org.shiki.hrm.domain.CourseType;
//import org.shiki.hrm.mapper.CourseTypeMapper;
//import org.shiki.hrm.service.ICourseTypeService;
//import com.baomidou.mybatisplus.service.impl.ServiceImpl;
//import org.shiki.hrm.util.AjaxResult;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.cache.annotation.CacheEvict;
//import org.springframework.cache.annotation.CachePut;
//import org.springframework.cache.annotation.Cacheable;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//
//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * <p>
// * 课程目录 服务实现类
// * </p>
// * @author shiki
// * @since 2022-03-12
// */
//@Service
//public class CourseTypeServiceImpl extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {
//
//	@Autowired
//	private CourseTypeMapper courseTypeMapper;
//
//	@Override
//	@Cacheable(cacheNames = CourseTypeConstant.COURSE_TYPE_TREE_DATA, key = "'type'")
//	public AjaxResult treeData() {
//		//List<CourseType> list = courseTypeMapper.treeData();
//		List<CourseType> list = loadTreeData();
//		System.out.println(list);
//		return AjaxResult.me().setResultObj(list);
//	}
//
//	/**
//	 * 查询全部数据并组装多层级
//	 * @return
//	 */
//	private List<CourseType> loadTreeData() {
//		List<CourseType> list = new ArrayList<>();
//		// 查询全部的type
//		List<CourseType> types = courseTypeMapper.selectList(null);
//		// 组装一对一关系
//		Map<Long, CourseType> map = new HashMap<>();
//		types.stream().forEach(type -> {
//			map.put(type.getId(), type);
//		});
//		// 组装层级关系
//		types.stream().forEach(type -> {
//			if (type.getPid() == 0) {
//				list.add(type);
//			} else {
//				// 获取父级id
//				Long pid = type.getPid();
//				// 获取父级type
//				CourseType courseType = map.get(pid);
//				// 存入父级children属性
//				courseType.getChildren().add(type);
//			}
//		});
//		return list;
//	}
//
//	@Override
//	@CacheEvict(cacheNames = CourseTypeConstant.COURSE_TYPE_TREE_DATA, key = "'type'")
//	public boolean deleteById(Serializable id) {
//		boolean b = super.deleteById(id);
//		return b;
//	}
//
//	@Override
//	@CachePut(cacheNames = CourseTypeConstant.COURSE_TYPE_TREE_DATA, key = "'type'")
//	public boolean insert(CourseType entity) {
//		boolean b = super.insert(entity);
//		return b;
//	}
//
//	@Override
//	@CacheEvict(cacheNames = CourseTypeConstant.COURSE_TYPE_TREE_DATA, key = "'type'")
//	public boolean updateById(CourseType entity) {
//		boolean b = super.updateById(entity);
//		return b;
//	}
//
//
//}
